<%--
    Document   : editalbum
    Created on : 15.05.2011, 17:22:34
    Author     : 647_2
--%>

<%@page import="Access.RecordingsRemote"%>
<%@page import="java.text.SimpleDateFormat"%>
<%@page import="java.util.Locale"%>
<%@page import="java.text.DateFormat"%>
<%@page import="ExtEntities.ExtComposition"%>
<%@page import="Entities.SoundRecordingCompany"%>
<%@page import="ExtEntities.VeryExtAlbum"%>
<%@page import="Access.AlbumsRemote"%>
<%@page import="java.text.spi.DateFormatProvider"%>
<%@page import="java.sql.Date"%>
<%@page import="Entities.URL"%>
<%@page import="Access.URLsRemote"%>
<%@page import="Access.ExecutorsWithInstrumentRemote"%>
<%@page import="Entities.ExecutorWithInstrument"%>
<%@page import="Entities.Genre"%>
<%@page import="Access.GenresRemote"%>
<%@page import="Access.GroupsRemote"%>
<%@page import="Entities.Group"%>
<%@page import="java.util.LinkedList"%>
<%@page import="params.Params"%>
<%@page import="Access.CompositionsRemote"%>
<%@page import="javax.naming.InitialContext"%>
<%@page import="ExtEntities.VeryExtComposition"%>
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
   "http://www.w3.org/TR/html4/loose.dtd">

<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title><% out.print("Правка/добавление альбома - " + Params.getSiteName()); %></title>
    </head>
    <body>
        <% out.print(Params.getHeader("Правка/добавление альбома")); %>

        <%
                   out.println("<a href=\"" + Params.getSiteURL() + "editalbum.jsp?mode=0\">[добавить новый альбом]</a> ");
                   out.println("<a href=\"" + request.getHeader("referer") + "\">[на предыдущую страницу]</a><br /><br />");

                   //while(request.getHeaderNames().hasMoreElements()){
                   //    out.println(request.getHeaderNames().nextElement() + "<br />");
                   //    request.getHeaderNames().
                   //}

                   InitialContext ic = new InitialContext();
                   CompositionsRemote r = (CompositionsRemote)ic.lookup(CompositionsRemote.class.getName());
                   GroupsRemote gr = (GroupsRemote)ic.lookup(GroupsRemote.class.getName());
                   AlbumsRemote al = (AlbumsRemote)ic.lookup(AlbumsRemote.class.getName());
                   RecordingsRemote re = (RecordingsRemote)ic.lookup(RecordingsRemote.class.getName());
                   ExecutorsWithInstrumentRemote ews = (ExecutorsWithInstrumentRemote)ic.lookup(ExecutorsWithInstrumentRemote.class.getName());


                   int mode = 0;
                   int ID = 0;
                   int gID = 0;
                   int ewiID = 0;
                   int cID = 0;
                   int rID = 0;
                   String name = "";

                   Date date;

                   //ID = Integer.parseInt(request.getParameter("ID"));
                   mode = Integer.parseInt(request.getParameter("mode"));

                   switch(mode){

                       case 12: //удаление альбома

                           if (request.getParameter("ID") != null){

                             ID = Integer.parseInt(request.getParameter("ID"));

                             if (al.DeleteAlbum(ID)){
                                out.println("Альбом успешно удалён! А жаль :(");
                             } else {
                                out.println("Альбом не удалён!");
                             }
                           } else {
                              out.println("Неверные параметры");
                           }
                           break;

                           case 11: //удаление ИсИ

                           if ((request.getParameter("ID") != null) && (request.getParameter("ewiID") != null)){

                             ID = Integer.parseInt(request.getParameter("ID"));
                             ewiID = Integer.parseInt(request.getParameter("ewiID"));

                             if (al.DeleteExecutorWithInstrumentOfAlbum(ID, ewiID)){
                                out.println("Исполнитель успешно удалён из альбома!");
                             } else {
                                out.println("Исполнитель не удалён из альбома!");
                             }
                             } else {
                                 out.println("Неверные параметры");
                             }
                           break;

                         case 10: //добавление ИсИ

                             if ((request.getParameter("ID") != null) && (request.getParameter("ewiID") != null)){

                             ID = Integer.parseInt(request.getParameter("ID"));
                             ewiID = Integer.parseInt(request.getParameter("ewiID"));

                             if (al.AddExecutorWithInstrumentToAlbum(ID, ewiID)){
                                out.println("Исполнитель успешно добавлен к альбому!");
                             } else {
                                out.println("Исполнитель не добавлен к альбому!");
                             }
                             } else {
                                 out.println("Неверные параметры");
                             }
                           break;

                       case 9: //удаление композиции

                           if ((request.getParameter("ID") != null) && (request.getParameter("cID") != null)){

                             ID = Integer.parseInt(request.getParameter("ID"));
                             cID = Integer.parseInt(request.getParameter("cID"));

                             if (al.DeleteCompositionOfAlbum(ID, cID)){
                                out.println("Композиция успешно удалена из альбома!");
                             } else {
                                out.println("Композиция не удалена из альбома!");
                             }
                             } else {
                                 out.println("Неверные параметры");
                             }
                           break;

                         case 8: //добавление композиции

                             if ((request.getParameter("ID") != null) && (request.getParameter("cID") != null)){

                             ID = Integer.parseInt(request.getParameter("ID"));
                             cID = Integer.parseInt(request.getParameter("cID"));

                             if (al.AddCompositionToAlbum(ID, cID)){
                                out.println("Композиция успешно добавлена в альбом!");
                             } else {
                                out.println("Композиция не добавлена в альбом!");
                             }
                             } else {
                                 out.println("Неверные параметры");
                             }
                           break;

                       case 7: //удаление ЗЗК

                           if ((request.getParameter("ID") != null) && (request.getParameter("rID") != null)){

                             ID = Integer.parseInt(request.getParameter("ID"));
                             rID = Integer.parseInt(request.getParameter("rID"));

                             if (al.DeleteRecordingOfAlbum(ID, rID)){
                                out.println("Звукозаписывающая компания успешно удалена из альбома!");
                             } else {
                                out.println("Звукозаписывающая компания не удалена из альбома!");
                             }
                             } else {
                                 out.println("Неверные параметры");
                             }
                           break;

                         case 6: //добавление ЗЗК

                             if ((request.getParameter("ID") != null) && (request.getParameter("rID") != null)){

                             ID = Integer.parseInt(request.getParameter("ID"));
                             rID = Integer.parseInt(request.getParameter("rID"));

                             if (al.AddRecordingToAlbum(ID, rID)){
                                out.println("Звукозаписывающая компания успешно добавлена к альбому!");
                             } else {
                                out.println("Звукозаписывающая компания не добавлена к альбому!");
                             }
                             } else {
                                 out.println("Неверные параметры");
                             }
                           break;

                         case 5: //удаление группы

                             if ((request.getParameter("ID") != null) && (request.getParameter("gID") != null)){

                             ID = Integer.parseInt(request.getParameter("ID"));
                             gID = Integer.parseInt(request.getParameter("gID"));

                             if (al.DeleteGroupOfAlbum(ID, gID)){
                                out.println("Группа успешно удалена из альбома!");
                             } else {
                                out.println("Группа не удалена из альбома!");
                             }
                             } else {
                                 out.println("Неверные параметры");
                             }
                           break;

                         case 4: //добавление группы

                             if ((request.getParameter("ID") != null) && (request.getParameter("gID") != null)){

                             ID = Integer.parseInt(request.getParameter("ID"));
                             gID = Integer.parseInt(request.getParameter("gID"));

                             if (al.AddGroupToAlbum(ID, gID)){
                                out.println("Группа успешно добавлена к альбому!");
                             } else {
                                out.println("Группа не добавлена к альбому!");
                             }
                             } else {
                                 out.println("Неверные параметры");
                             }
                           break;

                         case 3: //принятие данных правки

                             if ((request.getParameter("name") != null) && (request.getParameter("ID") != null) && (request.getParameter("date") != null)){

                              name = request.getParameter("name");
                              name = new String(name.getBytes("ISO-8859-1"), "UTF-8");
                              ID = Integer.parseInt(request.getParameter("ID"));

                              int year = Integer.parseInt(request.getParameter("date").substring(0,4));
                              int month = Integer.parseInt(request.getParameter("date").substring(5,7));
                              int day = Integer.parseInt(request.getParameter("date").substring(8,10));

                              date = new Date(DateFormat.getDateInstance().parse(day + "." + month + "." + year).getTime());

                              if (al.UpdateAlbum(ID, name, date)){
                                    out.println("Альбом обновлён!");
                              } else {
                                    out.println("Альбом не обновлён!");
                              }
                              } else {
                                 out.println("Неверные параметры");
                             }
                            break;

                         case 2: //страница правки (несколько блоков)

                             if (request.getParameter("ID") != null){

                             ID = Integer.parseInt(request.getParameter("ID"));

                             VeryExtAlbum album = al.getFullAlbum(ID);

                             if (album != null){

                             //Блок правки данных композиции
                             out.println("Правка данных об альбоме: <br />");
                             out.println("<form action=\"" + Params.getSiteURL() + "editalbum.jsp?mode=3&ID=" + album.getID() + "\" method=\"POST\">");
                             out.println("Название: <input type=\"text\" name=\"name\" value=\"" + album.getName() + "\"/><br />");
                             out.println("Дата издания: <input type=\"text\" name=\"date\" value=\"" + album.getDate() + "\"/><br />");
                             out.println("<input type=\"submit\" value=\"Править\"/>");
                             out.println("</form>");

                             //Добавление/удаление группы

                             LinkedList<Group> groups = gr.getAllGroups();

                             if (groups != null){

                             out.println("<form action=\"" + Params.getSiteURL() + "editalbum.jsp?mode=4&ID=" + album.getID() + "\" method=\"POST\">");
                             out.print("Добавление группы: <select name=\"gID\">");

                             for (int i = 0; i < groups.size(); i++){
                                   out.print("<option value=\"" + groups.get(i).getIDAsInt() + "\">" + groups.get(i).get_name() + "</option>");
                             }

                             out.print("</select>");
                             out.println("<input type=\"submit\" value=\"Добавить\"/>");
                             out.println("</form>");

                             }

                             out.println("<form action=\"" + Params.getSiteURL() + "editalbum.jsp?mode=5&ID=" + album.getID() + "\" method=\"POST\">");
                             out.print("Удаление группы: <select name=\"gID\">");

                             for (int i = 0; i < album.getGroups().size(); i++){
                                   out.print("<option value=\"" + album.getGroups().get(i).getIDAsInt() + "\">" + album.getGroups().get(i).get_name() + "</option>");
                             }

                             out.print("</select>");
                             out.println("<input type=\"submit\" value=\"Удалить\"/>");
                             out.println("</form>");

                             //Добавление/удаление звукозаписывающей компании

                             LinkedList<SoundRecordingCompany> src = re.getAllRecordings();


                             if (src != null){

                             out.println("<form action=\"" + Params.getSiteURL() + "editalbum.jsp?mode=6&ID=" + album.getID() + "\" method=\"POST\">");
                             out.print("Добавление звукозаписывающей компании: <select name=\"rID\">");

                             for (int i = 0; i < src.size(); i++){
                                   out.print("<option value=\"" + src.get(i).getIDAsInt() + "\">" + src.get(i).get_name() + "</option>");
                             }

                             out.print("</select>");
                             out.println("<input type=\"submit\" value=\"Добавить\"/>");
                             out.println("</form>");

                             }

                             out.println("<form action=\"" + Params.getSiteURL() + "editalbum.jsp?mode=7&ID=" + album.getID() + "\" method=\"POST\">");
                             out.print("Удаление звукозаписывающей компании: <select name=\"rID\">");

                             for (int i = 0; i < album.getRecordings().size(); i++){
                                   out.print("<option value=\"" + album.getRecordings().get(i).getIDAsInt() + "\">" + album.getRecordings().get(i).get_name() + "</option>");
                             }

                             out.print("</select>");
                             out.println("<input type=\"submit\" value=\"Удалить\"/>");
                             out.println("</form>");

                             //Добавление/удаление исполнителя с инструментом

                             LinkedList<ExecutorWithInstrument> ewis = ews.getAllExecutorsWithInstrument();

                             if (ewis != null){

                             out.println("<form action=\"" + Params.getSiteURL() + "editalbum.jsp?mode=10&ID=" + album.getID() + "\" method=\"POST\">");
                             out.print("Добавление исполнителя: <select name=\"ewiID\">");

                             for (int i = 0; i < ewis.size(); i++){
                                   out.print("<option value=\"" + ewis.get(i).getIDAsInt() + "\">" + ewis.get(i).get_executor().get_FIO() + " (" + ewis.get(i).get_instrument().get_name() + ")</option>");
                             }

                             out.print("</select>");
                             out.println("<input type=\"submit\" value=\"Добавить\"/>");
                             out.println("</form>");

                             }

                             out.println("<form action=\"" + Params.getSiteURL() + "editalbum.jsp?mode=11&ID=" + album.getID() + "\" method=\"POST\">");
                             out.print("Удаление исполнителя: <select name=\"ewiID\">");

                             for (int i = 0; i < album.getEwis().size(); i++){
                                   out.print("<option value=\"" + album.getEwis().get(i).getIDAsInt() + "\">" + album.getEwis().get(i).get_executor().get_FIO() + " (" + album.getEwis().get(i).get_instrument().get_name() + ")</option>");
                             }

                             out.print("</select>");
                             out.println("<input type=\"submit\" value=\"Удалить\"/>");
                             out.println("</form>");

                             //Добавление/удаление композиции

                             LinkedList<ExtComposition> comps = r.getAllCompositions();

                             if (comps != null){

                             out.println("<form action=\"" + Params.getSiteURL() + "editalbum.jsp?mode=8&ID=" + album.getID() + "\" method=\"POST\">");
                             out.print("Добавление композиции: <select name=\"cID\">");

                             for (int i = 0; i < comps.size(); i++){
                                   out.print("<option value=\"" + comps.get(i).getID() + "\">" + comps.get(i).getName() + " (" + Params.getMinSec(comps.get(i).getDuration()) + ")</option>");
                             }

                             out.print("</select>");
                             out.println("<input type=\"submit\" value=\"Добавить\"/>");
                             out.println("</form>");

                             }

                             out.println("<form action=\"" + Params.getSiteURL() + "editalbum.jsp?mode=9&ID=" + album.getID() + "\" method=\"POST\">");
                             out.print("Удаление композиции: <select name=\"cID\">");

                             for (int i = 0; i < album.getCompositions().size(); i++){
                                   out.print("<option value=\"" + album.getCompositions().get(i).getIDAsInt() + "\">" + album.getCompositions().get(i).get_name() + " (" + Params.getMinSec(album.getCompositions().get(i).get_duration()) + ")</option>");
                             }

                             out.print("</select>");
                             out.println("<input type=\"submit\" value=\"Удалить\"/>");
                             out.println("</form>");

                             out.println("<a href=\"" + Params.getSiteURL() + "editalbum.jsp?mode=12&ID=" + album.getID() + "\">[удалить альбом]</a>");
                             } else {
                                 out.println("Данный альбом не содержится в базе");
                             }
                             } else {
                                 out.println("Неверные параметры");
                             }
                            break;

                          case 1: //обработчик добавления

                              if ((request.getParameter("name") != null) && (request.getParameter("date") != null)){

                              name = request.getParameter("name");
                              name = new String(name.getBytes("ISO-8859-1"), "UTF-8");

                              int year = Integer.parseInt(request.getParameter("date").substring(0,4));
                              int month = Integer.parseInt(request.getParameter("date").substring(5,7));
                              int day = Integer.parseInt(request.getParameter("date").substring(8,10));

                              date = new Date(DateFormat.getDateInstance().parse(day + "." + month + "." + year).getTime());

                              if (al.AddAlbum(name, date)){
                                    out.println("Альбом добавлен успешно!");
                              } else {
                                    out.println("Альбом не добавлен!");
                              }
                              } else {
                                 out.println("Неверные параметры");
                             }
                              break;

                          case 0: //страница добавления
                          default:
                              out.println("<form action=\"" + Params.getSiteURL() + "editalbum.jsp?mode=1\" method=\"POST\">");
                              out.println("Название: <input type=\"text\" name=\"name\" /><br />");
                              out.println("Дата издания: <input type=\"text\" name=\"date\" /><br />");
                              out.println("<input type=\"submit\" value=\"Добавить\"/>");
                              out.println("</form>");

                   }


        %>
        <% out.print(Params.getFooter()); %>
    </body>
</html>
